/**
 * 地图模块
 * 提供Cesium地图的增强功能
 * @module CesiumExtensions/map
 */

/**
 * 地图增强器
 * 增强Cesium Viewer的功能
 * @class
 * @example
 * // 使用地图增强器
 * const mapEnhancer = new MapEnhancer();
 * mapEnhancer.enhance(viewer);
 */
export class MapEnhancer {
  /**
   * 构造函数
   * @constructor
   */
  constructor() {
    this._enhancedViewers = new WeakMap();
  }

  /**
   * 增强地图功能
   * @param {external:Cesium.Viewer} viewer - Cesium Viewer实例
   * @returns {external:Cesium.Viewer} 增强后的Viewer实例
   */
  enhance(viewer) {
    if (!this._enhancedViewers.has(viewer)) {
      // 存储原始方法引用
      const originalMethods = {};
      
      // 添加增强方法
      viewer.CesiumExtensions = viewer.CesiumExtensions || {};
      
      // 记录增强状态
      this._enhancedViewers.set(viewer, originalMethods);
    }
    
    return viewer;
  }

  /**
   * 恢复原始地图功能
   * @param {external:Cesium.Viewer} viewer - Cesium Viewer实例
   * @returns {external:Cesium.Viewer} 恢复后的Viewer实例
   */
  restore(viewer) {
    if (this._enhancedViewers.has(viewer)) {
      // 清理增强方法
      delete viewer.CesiumExtensions;
      
      // 恢复原始方法
      this._enhancedViewers.delete(viewer);
    }
    
    return viewer;
  }
}

// 导出地图模块
export default {
  MapEnhancer
};